package com.maxd.model;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 支付流水表
 */
@ApiModel("支付流水表")
@Entity
@Getter
@Setter
@Table(name = "pay_record")
@DynamicInsert
@DynamicUpdate
public class PayRecord implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 支付流水号，系统产生
     */
    @ApiModelProperty("支付流水号，系统产生")
    @Id
    @Column(name = "pay_seq", nullable = false)
    private String paySeq;

    /**
     * 用户id
     */
    @ApiModelProperty("用户id")
    @Column(name = "user_id", nullable = false)
    private Long userId;

    /**
     * 支付平台流水号，支付平台返回
     */
    @ApiModelProperty("支付平台流水号，支付平台返回")
    @Column(name = "transaction_id", nullable = false)
    private String transactionId;

    /**
     * 支付方式，当前只支持WX_JSAPI-微信小程序
     */
    @ApiModelProperty("支付方式，当前只支持WX_JSAPI-微信小程序")
    @Column(name = "pay_way", nullable = false)
    private String payWay;

    /**
     * 支付金额
     */
    @ApiModelProperty("支付金额")
    @Column(name = "pay_amount", nullable = false)
    private BigDecimal payAmount;

    /**
     * 支付描述
     */
    @ApiModelProperty("支付描述")
    @Column(name = "description", nullable = true)
    private String description;

    /**
     * 支付场景 ORDER-下单支付 ACTIVITY-活动支付
     */
    @ApiModelProperty("支付场景 ORDER-下单支付 ACTIVITY-活动支付")
    @Column(name = "pay_scene", nullable = false)
    private String payScene;

    /**
     * 业务主键，通过业务类型和业务主键能定位到具体的业务交易流水
     */
    @ApiModelProperty("业务主键，通过业务类型和业务主键能定位到具体的业务交易流水")
    @Column(name = "business_id", nullable = false)
    private String businessId;

    /**
     * 支付状态 0-初始化 1-预下单完成 2-支付成功 3-取消
     */
    @ApiModelProperty("支付状态 0-初始化 1-预下单完成 2-支付成功 3-取消")
    @Column(name = "pay_status", nullable = false)
    private String payStatus;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @Column(name = "create_time", nullable = false)
    private Date createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    @Column(name = "update_time", nullable = false)
    private Date updateTime;

    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    @Column(name = "create_by")
    private String createBy;

    /**
     * 更新人
     */
    @ApiModelProperty("更新人")
    @Column(name = "update_by")
    private String updateBy;

}
